Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


docs/manual/_static/copybutton.js dff7bb0ceb4a036d31bba65875bc92ff8a31074f (dff7bb0c) Text, 8.47 KB

T8b949e// Localization support
Tff7b72const Te6edf3messages Tff7b72= Tb4b4b4{
Ta5d6ff'en'Tff7b72: Tb4b4b4{
Ta5d6ff'copy'Tff7b72: Ta5d6ff'Copy'Tb4b4b4,
Ta5d6ff'copy_to_clipboard'Tff7b72: Ta5d6ff'Copy to clipboard'Tb4b4b4,
Ta5d6ff'copy_success'Tff7b72: Ta5d6ff'Copied!'Tb4b4b4,
Ta5d6ff'copy_failure'Tff7b72: Ta5d6ff'Failed to copy'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Ta5d6ff'es' Tff7b72: Tb4b4b4{
Ta5d6ff'copy'Tff7b72: Ta5d6ff'Copiar'Tb4b4b4,
Ta5d6ff'copy_to_clipboard'Tff7b72: Ta5d6ff'Copiar al portapapeles'Tb4b4b4,
Ta5d6ff'copy_success'Tff7b72: Ta5d6ff'¡Copiado!'Tb4b4b4,
Ta5d6ff'copy_failure'Tff7b72: Ta5d6ff'Error al copiar'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Ta5d6ff'de' Tff7b72: Tb4b4b4{
Ta5d6ff'copy'Tff7b72: Ta5d6ff'Kopieren'Tb4b4b4,
Ta5d6ff'copy_to_clipboard'Tff7b72: Ta5d6ff'In die Zwischenablage kopieren'Tb4b4b4,
Ta5d6ff'copy_success'Tff7b72: Ta5d6ff'Kopiert!'Tb4b4b4,
Ta5d6ff'copy_failure'Tff7b72: Ta5d6ff'Fehler beim Kopieren'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Ta5d6ff'fr' Tff7b72: Tb4b4b4{
Ta5d6ff'copy'Tff7b72: Ta5d6ff'Copier'Tb4b4b4,
Ta5d6ff'copy_to_clipboard'Tff7b72: Ta5d6ff'Copier dans le presse-papier'Tb4b4b4,
Ta5d6ff'copy_success'Tff7b72: Ta5d6ff'Copié !'Tb4b4b4,
Ta5d6ff'copy_failure'Tff7b72: Ta5d6ff'Échec de la copie'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Ta5d6ff'ru'Tff7b72: Tb4b4b4{
Ta5d6ff'copy'Tff7b72: Ta5d6ff'Скопировать'Tb4b4b4,
Ta5d6ff'copy_to_clipboard'Tff7b72: Ta5d6ff'Скопировать в буфер'Tb4b4b4,
Ta5d6ff'copy_success'Tff7b72: Ta5d6ff'Скопировано!'Tb4b4b4,
Ta5d6ff'copy_failure'Tff7b72: Ta5d6ff'Не удалось скопировать'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Ta5d6ff'zh-CN'Tff7b72: Tb4b4b4{
Ta5d6ff'copy'Tff7b72: Ta5d6ff'复制'Tb4b4b4,
Ta5d6ff'copy_to_clipboard'Tff7b72: Ta5d6ff'复制到剪贴板'Tb4b4b4,
Ta5d6ff'copy_success'Tff7b72: Ta5d6ff'复制成功!'Tb4b4b4,
Ta5d6ff'copy_failure'Tff7b72: Ta5d6ff'复制失败'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Ta5d6ff'it' Tff7b72: Tb4b4b4{
Ta5d6ff'copy'Tff7b72: Ta5d6ff'Copiare'Tb4b4b4,
Ta5d6ff'copy_to_clipboard'Tff7b72: Ta5d6ff'Copiato negli appunti'Tb4b4b4,
Ta5d6ff'copy_success'Tff7b72: Ta5d6ff'Copiato!'Tb4b4b4,
Ta5d6ff'copy_failure'Tff7b72: Ta5d6ff'Errore durante la copia'Tb4b4b4,
Tb4b4b4}
Tb4b4b4}

Tff7b72let Te6edf3locale Tff7b72= Ta5d6ff'en'
Tff7b72ifTb4b4b4( Tffa657documentTb4b4b4.Te6edf3documentElementTb4b4b4.Te6edf3lang Tff7b72!== Tff7b72undefined
Tff7b72&& Te6edf3messagesTb4b4b4[Tffa657documentTb4b4b4.Te6edf3documentElementTb4b4b4.Te6edf3langTb4b4b4] Tff7b72!== Tff7b72undefined Tb4b4b4) Tb4b4b4{
Te6edf3locale Tff7b72= Tffa657documentTb4b4b4.Te6edf3documentElementTb4b4b4.Te6edf3lang
Tb4b4b4}

Tff7b72let Te6edf3doc_url_root Tff7b72= Te6edf3DOCUMENTATION_OPTIONSTb4b4b4.Te6edf3URL_ROOTTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3doc_url_root Tff7b72== Ta5d6ff'#'Tb4b4b4) Tb4b4b4{
Te6edf3doc_url_root Tff7b72= Ta5d6ff''Tb4b4b4;
Tb4b4b4}

T8b949e/**
* SVG files for our copy buttons
*/
Tff7b72let Te6edf3iconCheck Tff7b72= Ta5d6ff`Ta5d6ff<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-check" width="44" height="44" viewBox="0 0 24 24" stroke-width="2" stroke="#22863a" fill="none" stroke-linecap="round" stroke-linejoin="round">
<title>Tffd700${Te6edf3messagesTb4b4b4[Te6edf3localeTb4b4b4]Tb4b4b4[Ta5d6ff'copy_success'Tb4b4b4]Tffd700}Ta5d6ff</title>
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M5 12l5 5l10 -10" />
/svg>Ta5d6ff`

T8b949e// If the user specified their own SVG use that, otherwise use the default
Tff7b72let Te6edf3iconCopy Tff7b72= Ta5d6ff`Ta5d6ff`Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3iconCopyTb4b4b4) Tb4b4b4{
Te6edf3iconCopy Tff7b72= Ta5d6ff`Ta5d6ff<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-copy" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="#000000" fill="none" stroke-linecap="round" stroke-linejoin="round">
<title>Tffd700${Te6edf3messagesTb4b4b4[Te6edf3localeTb4b4b4]Tb4b4b4[Ta5d6ff'copy_to_clipboard'Tb4b4b4]Tffd700}Ta5d6ff</title>
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<rect x="8" y="8" width="12" height="12" rx="2" />
<path d="M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2" />
/svg>Ta5d6ff`
Tb4b4b4}

T8b949e/**
* Set up copy/paste for code blocks
*/

Tff7b72const Te6edf3runWhenDOMLoaded Tff7b72= Te6edf3cb Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tffa657documentTb4b4b4.Te6edf3readyState Tff7b72!= Ta5d6ff'loading'Tb4b4b4) Tb4b4b4{
Te6edf3cbTb4b4b4(Tb4b4b4)
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Tffa657documentTb4b4b4.Te6edf3addEventListenerTb4b4b4) Tb4b4b4{
Tffa657documentTb4b4b4.Te6edf3addEventListenerTb4b4b4(Ta5d6ff'DOMContentLoaded'Tb4b4b4, Te6edf3cbTb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Tffa657documentTb4b4b4.Te6edf3attachEventTb4b4b4(Ta5d6ff'onreadystatechange'Tb4b4b4, Tff7b72functionTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tffa657documentTb4b4b4.Te6edf3readyState Tff7b72== Ta5d6ff'complete'Tb4b4b4) Te6edf3cbTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4)
Tb4b4b4}
Tb4b4b4}

Tff7b72const Te6edf3codeCellId Tff7b72= Te6edf3index Tb4b4b4=> Ta5d6ff`Ta5d6ffcodecellTffd700${Te6edf3indexTffd700}Ta5d6ff`

T8b949e// Clears selected text since ClipboardJS will select the text when copying
Tff7b72const Te6edf3clearSelection Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tffa657windowTb4b4b4.Te6edf3getSelectionTb4b4b4) Tb4b4b4{
Tffa657windowTb4b4b4.Te6edf3getSelectionTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3removeAllRangesTb4b4b4(Tb4b4b4)
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Tffa657documentTb4b4b4.Te6edf3selectionTb4b4b4) Tb4b4b4{
Tffa657documentTb4b4b4.Te6edf3selectionTb4b4b4.Te6edf3emptyTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tb4b4b4}

T8b949e// Changes tooltip text for a moment, then changes it back
T8b949e// We want the timeout of our `success` class to be a bit shorter than the
T8b949e// tooltip and icon change, so that we can hide the icon before changing back.
Tff7b72var Te6edf3timeoutIcon Tff7b72= T79c0ff2000Tb4b4b4;
Tff7b72var Te6edf3timeoutSuccessClass Tff7b72= T79c0ff1500Tb4b4b4;

Tff7b72const Te6edf3temporarilyChangeTooltip Tff7b72= Tb4b4b4(Te6edf3elTb4b4b4, Te6edf3oldTextTb4b4b4, Te6edf3newTextTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3elTb4b4b4.Te6edf3setAttributeTb4b4b4(Ta5d6ff'data-tooltip'Tb4b4b4, Te6edf3newTextTb4b4b4)
Te6edf3elTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3addTb4b4b4(Ta5d6ff'success'Tb4b4b4)
T8b949e// Remove success a little bit sooner than we change the tooltip
T8b949e// So that we can use CSS to hide the copybutton first
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3elTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3removeTb4b4b4(Ta5d6ff'success'Tb4b4b4)Tb4b4b4, Te6edf3timeoutSuccessClassTb4b4b4)
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3elTb4b4b4.Te6edf3setAttributeTb4b4b4(Ta5d6ff'data-tooltip'Tb4b4b4, Te6edf3oldTextTb4b4b4)Tb4b4b4, Te6edf3timeoutIconTb4b4b4)
Tb4b4b4}

T8b949e// Changes the copy button icon for two seconds, then changes it back
Tff7b72const Te6edf3temporarilyChangeIcon Tff7b72= Tb4b4b4(Te6edf3elTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3elTb4b4b4.Te6edf3innerHTML Tff7b72= Te6edf3iconCheckTb4b4b4;
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{Te6edf3elTb4b4b4.Te6edf3innerHTML Tff7b72= Te6edf3iconCopyTb4b4b4}Tb4b4b4, Te6edf3timeoutIconTb4b4b4)
Tb4b4b4}

Tff7b72const Te6edf3addCopyButtonToCodeCells Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// If ClipboardJS hasn't loaded, wait a bit and try again. This
T8b949e// happens because we load ClipboardJS asynchronously.
Tff7b72if Tb4b4b4(Tffa657windowTb4b4b4.Te6edf3ClipboardJS Tff7b72=== Tff7b72undefinedTb4b4b4) Tb4b4b4{
Te6edf3setTimeoutTb4b4b4(Te6edf3addCopyButtonToCodeCellsTb4b4b4, T79c0ff250Tb4b4b4)
Tff7b72return
Tb4b4b4}

T8b949e// Add copybuttons to all of our code cells
Tff7b72const Te6edf3COPYBUTTON_SELECTOR Tff7b72= Ta5d6ff'div.highlight pre'Tb4b4b4;
Tff7b72const Te6edf3codeCells Tff7b72= Tffa657documentTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Te6edf3COPYBUTTON_SELECTORTb4b4b4)
Te6edf3codeCellsTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3codeCellTb4b4b4, Te6edf3indexTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3id Tff7b72= Te6edf3codeCellIdTb4b4b4(Te6edf3indexTb4b4b4)
Te6edf3codeCellTb4b4b4.Te6edf3setAttributeTb4b4b4(Ta5d6ff'id'Tb4b4b4, Te6edf3idTb4b4b4)

Tff7b72const Te6edf3clipboardButton Tff7b72= Te6edf3id Tb4b4b4=>
Ta5d6ff`Ta5d6ff<button class="copybtn o-tooltip--left" data-tooltip="Tffd700${Te6edf3messagesTb4b4b4[Te6edf3localeTb4b4b4]Tb4b4b4[Ta5d6ff'copy'Tb4b4b4]Tffd700}Ta5d6ff" data-clipboard-target="#Tffd700${Te6edf3idTffd700}Ta5d6ff">
Tffd700${Te6edf3iconCopyTffd700}
Ta5d6ff </button>Ta5d6ff`
Te6edf3codeCellTb4b4b4.Te6edf3insertAdjacentHTMLTb4b4b4(Ta5d6ff'afterend'Tb4b4b4, Te6edf3clipboardButtonTb4b4b4(Te6edf3idTb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4)

Tff7b72function Te6edf3escapeRegExpTb4b4b4(Te6edf3stringTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3stringTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/[.*+?^${}()|[\]\\]/gTb4b4b4, Ta5d6ff'\\$&'Tb4b4b4)Tb4b4b4; T8b949e// $& means the whole matched string
Tb4b4b4}

T8b949e/**
* Removes excluded text from a Node.
*
* @param {Node} target Node to filter.
* @param {string} exclude CSS selector of nodes to exclude.
* @returns {DOMString} Text from `target` with text removed.
*/
Tff7b72function Te6edf3filterTextTb4b4b4(Te6edf3targetTb4b4b4, Te6edf3excludeTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3clone Tff7b72= Te6edf3targetTb4b4b4.Te6edf3cloneNodeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4; T8b949e// clone as to not modify the live DOM
Tff7b72if Tb4b4b4(Te6edf3excludeTb4b4b4) Tb4b4b4{
T8b949e// remove excluded nodes
Te6edf3cloneTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Te6edf3excludeTb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Te6edf3node Tb4b4b4=> Te6edf3nodeTb4b4b4.Te6edf3removeTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3cloneTb4b4b4.Te6edf3innerTextTb4b4b4;
Tb4b4b4}

T8b949e// Callback when a copy button is clicked. Will be passed the node that was clicked
T8b949e// should then grab the text and replace pieces of text that shouldn't be used in output
Tff7b72function Te6edf3formatCopyTextTb4b4b4(Te6edf3textContentTb4b4b4, Te6edf3copybuttonPromptTextTb4b4b4, Te6edf3isRegexp Tff7b72= Tff7b72falseTb4b4b4, Te6edf3onlyCopyPromptLines Tff7b72= Tff7b72trueTb4b4b4, Te6edf3removePrompts Tff7b72= Tff7b72trueTb4b4b4, Te6edf3copyEmptyLines Tff7b72= Tff7b72trueTb4b4b4, Te6edf3lineContinuationChar Tff7b72= Ta5d6ff""Tb4b4b4, Te6edf3hereDocDelim Tff7b72= Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72var Te6edf3regexpTb4b4b4;
Tff7b72var Te6edf3matchTb4b4b4;

T8b949e// Do we check for line continuation characters and "HERE-documents"?
Tff7b72var Te6edf3useLineCont Tff7b72= Tff7b72!Tff7b72!Te6edf3lineContinuationChar
Tff7b72var Te6edf3useHereDoc Tff7b72= Tff7b72!Tff7b72!Te6edf3hereDocDelim

T8b949e// create regexp to capture prompt and remaining line
Tff7b72if Tb4b4b4(Te6edf3isRegexpTb4b4b4) Tb4b4b4{
Te6edf3regexp Tff7b72= Tff7b72new Tffa657RegExpTb4b4b4(Ta5d6ff'^(' Tff7b72+ Te6edf3copybuttonPromptText Tff7b72+ Ta5d6ff')(.*)'Tb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3regexp Tff7b72= Tff7b72new Tffa657RegExpTb4b4b4(Ta5d6ff'^(' Tff7b72+ Te6edf3escapeRegExpTb4b4b4(Te6edf3copybuttonPromptTextTb4b4b4) Tff7b72+ Ta5d6ff')(.*)'Tb4b4b4)
Tb4b4b4}

Tff7b72const Te6edf3outputLines Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72var Te6edf3promptFound Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72var Te6edf3gotLineCont Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72var Te6edf3gotHereDoc Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3lineGotPrompt Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3line Tff7b72of Te6edf3textContentTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff'\n'Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3match Tff7b72= Te6edf3lineTb4b4b4.Te6edf3matchTb4b4b4(Te6edf3regexpTb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3match Tff7b72|| Te6edf3gotLineCont Tff7b72|| Te6edf3gotHereDocTb4b4b4) Tb4b4b4{
Te6edf3promptFound Tff7b72= Te6edf3regexpTb4b4b4.Te6edf3testTb4b4b4(Te6edf3lineTb4b4b4)
Te6edf3lineGotPromptTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3promptFoundTb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3removePrompts Tff7b72&& Te6edf3promptFoundTb4b4b4) Tb4b4b4{
Te6edf3outputLinesTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3matchTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3outputLinesTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3lineTb4b4b4)
Tb4b4b4}
Te6edf3gotLineCont Tff7b72= Te6edf3lineTb4b4b4.Te6edf3endsWithTb4b4b4(Te6edf3lineContinuationCharTb4b4b4) Tff7b72& Te6edf3useLineCont
Tff7b72if Tb4b4b4(Te6edf3lineTb4b4b4.Te6edf3includesTb4b4b4(Te6edf3hereDocDelimTb4b4b4) Tff7b72& Te6edf3useHereDocTb4b4b4)
Te6edf3gotHereDoc Tff7b72= Tff7b72!Te6edf3gotHereDoc
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Tff7b72!Te6edf3onlyCopyPromptLinesTb4b4b4) Tb4b4b4{
Te6edf3outputLinesTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3lineTb4b4b4)
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3copyEmptyLines Tff7b72&& Te6edf3lineTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72=== Ta5d6ff''Tb4b4b4) Tb4b4b4{
Te6edf3outputLinesTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3lineTb4b4b4)
Tb4b4b4}
Tb4b4b4}

T8b949e// If no lines with the prompt were found then just use original lines
Tff7b72if Tb4b4b4(Te6edf3lineGotPromptTb4b4b4.Te6edf3someTb4b4b4(Te6edf3v Tb4b4b4=> Te6edf3v Tff7b72=== Tff7b72trueTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3textContent Tff7b72= Te6edf3outputLinesTb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff'\n'Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// Remove a trailing newline to avoid auto-running when pasting
Tff7b72if Tb4b4b4(Te6edf3textContentTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff"\n"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3textContent Tff7b72= Te6edf3textContentTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Tff7b72-T79c0ff1Tb4b4b4)
Tb4b4b4}
Tff7b72return Te6edf3textContent
Tb4b4b4}


Tff7b72var Te6edf3copyTargetText Tff7b72= Tb4b4b4(Te6edf3triggerTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72var Te6edf3target Tff7b72= Tffa657documentTb4b4b4.Te6edf3querySelectorTb4b4b4(Te6edf3triggerTb4b4b4.Te6edf3attributesTb4b4b4[Ta5d6ff'data-clipboard-target'Tb4b4b4]Tb4b4b4.Te6edf3valueTb4b4b4)Tb4b4b4;

T8b949e// get filtered text
Tff7b72let Te6edf3exclude Tff7b72= Ta5d6ff'.linenos'Tb4b4b4;

Tff7b72let Te6edf3text Tff7b72= Te6edf3filterTextTb4b4b4(Te6edf3targetTb4b4b4, Te6edf3excludeTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3formatCopyTextTb4b4b4(Te6edf3textTb4b4b4, Ta5d6ff''Tb4b4b4, Tff7b72falseTb4b4b4, Tff7b72trueTb4b4b4, Tff7b72trueTb4b4b4, Tff7b72trueTb4b4b4, Ta5d6ff''Tb4b4b4, Ta5d6ff''Tb4b4b4)
Tb4b4b4}

T8b949e// Initialize with a callback so we can modify the text before copy
Tff7b72const Te6edf3clipboard Tff7b72= Tff7b72new Te6edf3ClipboardJSTb4b4b4(Ta5d6ff'.copybtn'Tb4b4b4, Tb4b4b4{Te6edf3textTff7b72: Te6edf3copyTargetTextTb4b4b4}Tb4b4b4)

T8b949e// Update UI with error/success messages
Te6edf3clipboardTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff'success'Tb4b4b4, Te6edf3event Tb4b4b4=> Tb4b4b4{
Te6edf3clearSelectionTb4b4b4(Tb4b4b4)
Te6edf3temporarilyChangeTooltipTb4b4b4(Te6edf3eventTb4b4b4.Te6edf3triggerTb4b4b4, Te6edf3messagesTb4b4b4[Te6edf3localeTb4b4b4]Tb4b4b4[Ta5d6ff'copy'Tb4b4b4]Tb4b4b4, Te6edf3messagesTb4b4b4[Te6edf3localeTb4b4b4]Tb4b4b4[Ta5d6ff'copy_success'Tb4b4b4]Tb4b4b4)
Te6edf3temporarilyChangeIconTb4b4b4(Te6edf3eventTb4b4b4.Te6edf3triggerTb4b4b4)
Tb4b4b4}Tb4b4b4)

Te6edf3clipboardTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff'error'Tb4b4b4, Te6edf3event Tb4b4b4=> Tb4b4b4{
Te6edf3temporarilyChangeTooltipTb4b4b4(Te6edf3eventTb4b4b4.Te6edf3triggerTb4b4b4, Te6edf3messagesTb4b4b4[Te6edf3localeTb4b4b4]Tb4b4b4[Ta5d6ff'copy'Tb4b4b4]Tb4b4b4, Te6edf3messagesTb4b4b4[Te6edf3localeTb4b4b4]Tb4b4b4[Ta5d6ff'copy_failure'Tb4b4b4]Tb4b4b4)
Tb4b4b4}Tb4b4b4)
Tb4b4b4}

Te6edf3runWhenDOMLoadedTb4b4b4(Te6edf3addCopyButtonToCodeCellsTb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────